LCML/HTTP

cookieget

cookieget - Получение значения или свойства cookie

Метод

Part: LCML/HTTP

Функция cookieGet извлекает значение или указанное свойство cookie по его имени из HTTP-запроса.

Формат:

cookieGet name field request
  • name - имя cookie.

  • field - название свойства cookie (опционально).

  • EXPIRES - возвращает время истечения срока действия cookie.

  • MAXAGE - возвращает максимальный возраст cookie в секундах.

  • PATH - возвращает путь, для которого действителен cookie.

  • SECURE - возвращает флаг безопасности (true/false).

  • по умолчанию - возвращает значение cookie.

  • request - HTTP-запрос (http.Request), содержащий cookie. Результат:

Возвращает значение cookie или указанное свойство. Если cookie не найдено, возвращается текст ошибки.

Пример использования:

{{ $ticketUid := cookieget "ticket" "" $.Value.Request }}

cookieset

cookieset - Установка cookie в HTTP-ответе

Метод

Part: LCML/HTTP

Функция cookieSet устанавливает cookie с заданными параметрами в HTTP-ответ.

Формат:

cookieSet name value ttl response
  • name - имя cookie.

  • value - значение cookie.

  • ttl - время жизни cookie в формате time.Duration (например, “1h”, “30m”).

  • response - HTTP-ответ (http.ResponseWriter), в который будет добавлено cookie. Результат:

Возвращает пустую строку, если cookie успешно установлено. В случае ошибки парсинга времени жизни ( ttl ) возвращает описание ошибки.

Пример использования:

{{ cookieset "ticket" $uidTicket "2592000s" $.RespWriter }}

curl

curl - Отправка HTTP-запроса

Метод

Part: LCML/HTTP

Функция curl выполняет HTTP-запрос с заданными параметрами. Она поддерживает передачу заголовков, тела запроса и cookie. Если ответ не содержит данных ( res.Data пуст), функция возвращает “сырые” данные ответа.

Формат:

curl method url bodyJSON headers cookies
  • method - HTTP-метод запроса (GET, POST, PUT, и т. д.).

  • url - URL, на который отправляется запрос.

  • bodyJSON - тело запроса в формате JSON.

  • headers - мапа заголовков, где ключи - имена заголовков, а значения - их содержимое.

  • cookies - массив мапок, представляющих cookie. Результат:

  • Данные из ответа ( res ), если поле res.Data содержит значения.

  • “Сырые” данные ( raw ), если res.Data пуст. Пример использования:

    {{ curl "GET" $exampleUrl "" nil nil }}
    

parsebody

parsebody - Чтение и обработка тела HTTP-запроса

Метод

Part: LCML/HTTP

Функция parseBody предназначена для чтения содержимого тела HTTP-запроса и его преобразования в указанный формат. Полезна при работе с API-запросами или при обработке данных от клиента.

Формат:

parsebody request format
  • request — HTTP-запрос, тело которого необходимо обработать.

  • format — формат, в который требуется преобразовать данные (по умолчанию возвращает содержимое тела запроса в виде строки). Результат:

Возвращает десериализованный объект или строку в зависимости от заданного формата. В случае ошибок возвращает сообщение об ошибке.

Пример использования:

{{ $formData := parsebody $.Request "json" }}
{{ $name := index $formData "name" }}
{{ $email := index $formData "email" }}
{{ $message := index $formData "message" }}

Тело запроса (JSON):

{
"name": "Иван Ловецкий",
"email": "ivan.lovetsky@example.com",
"message": "Хотелось бы узнать больше о курсе по программированию на Golang."
}

Результат: Если данные корректны, выводится сообщение благодарности с данными пользователя.


parseform

parseform -

Метод

Part: LCML/HTTP

Функция parseForm извлекает данные из формы, отправленной в HTTP-запросе, и преобразует их в карту, где каждому ключу сопоставлен массив значений.

Формат:

parseform request
  • request — HTTP-запрос (объект http.Request), содержащий данные формы. Результат:

Возвращает карту ( map[string][]string ), где ключи — имена полей формы, а значения — массив значений, соответствующих каждому ключу. Если возникает ошибка при обработке данных формы, возвращается nil.

Пример использования:

{{ $formData := parseform $.Request }}
{{ $name := index $formData "name" }}
{{ $email := index $formData "email" }}
{{ $course := index $formData "course" }}

Тело формы (отправленное POST-запросом):

name=Иван Ловецкий
email=ivan.lovetsky@example.com
course=Программирование на Golang

Результат: Получение информации о регистрации пользователя для курса программирования на Golang.


parseformsep

parseformsep -

Метод

Part: LCML/HTTP

Функция parseformsep предназначена для обработки значений из HTTP-запроса и их преобразования в карту ( map ), где ключ — это имя параметра, а значение — строка, содержащая значения этого параметра, объединённые указанным разделителем.

Формат:

parseformsep request separator
  • request — HTTP-запрос (объект http.Request), содержащий данные формы.
  • separator — Разделитель, используемый для объединения значений (по умолчанию, ). Результат:

Возвращает map[string]string, где ключи — это названия полей из формы, а значения — строки, объединённые указанным разделителем.

Пример использования:

Входной HTTP-запрос содержит следующие данные формы:

name: [Ivan, Katerina]
course: [Golang, Javascript]
email: [ivan.lovetsky@example.com, katerina.zakharova@example.com]

Шаблон:

{{ $formData := parseformsep $.Request ";" }}

Имя: {{ index $formData “name” }}

Курсы: {{ index $formData “course” }}

Email: {{ index $formData “email” }}

>>

<p>Имя: Ivan;Katerina</p>

<p>Курсы: Golang;Javascript</p>

<p>Email: ivan.lovetsky@example.com;katerina.zakharova@example.com</p>


parseuseragent

parseuseragent - Функция parseuseragent анализирует строку заголовка User-Agent, извлекая различные параметры, такие как название приложения, версия, операционная система, тип устройства и статус (мобильное ли это устройство, планшет или бот).

Метод

Part: LCML/HTTP

Функция возвращает строковое значение, соответствующее запрашиваемому параметру.

Формат:

parseUserAgent header param
  • header (тип: string) — строка, содержащая заголовок User-Agent, который необходимо разобрать.

  • param (тип: string) — параметр, значение которого требуется вернуть. Возможные значения param:

  • “Name” — Название приложения или браузера.

  • “Version” — Версия приложения или браузера.

  • “OS” — Название операционной системы устройства.

  • “OSVersion” — Версия операционной системы устройства.

  • “Device” — Тип устройства (например, мобильный телефон, планшет или десктоп).

  • “isMobile” — true, если это мобильное устройство.

  • “isTablet” — true, если это планшет.

  • “isBot” — true, если это бот.

  • “isDesktop” — true, если это десктоп. Результат:

Возвращаемое значение — строка, соответствующая значению для запрашиваемого параметра.Если параметр не найден, возвращается пустая строка.

Пример:

{{$platform := parseUserAgent (index (index $.Value.Request.Header "User-Agent") 0) "OS" }}

profile

profile - Получение профиля пользователя

Метод

Part: LCML/HTTP

Функция profile извлекает данные о текущем профиле пользователя из контекста HTTP-запроса, затем парсит эти данные в структуру models.ProfileData.


**Формат**
profile r
  • r (http.Request) — HTTP-запрос, в котором содержится информация о текущем профиле пользователя в контексте. Результат

Возвращает структуру данных models.ProfileData, содержащую информацию о профиле пользователя. Если произошла ошибка при парсинге или если профиль отсутствует, возвращается пустая структура.

Пример использования


profileuid

profileuid - Получение UID профиля по UID роли

Метод

Part: LCML/HTTP

Формат


profileuid r roleuid
  • r (http.Request) — HTTP-запрос, содержащий информацию о профиле пользователя.

  • roleuid (string) — UID роли, связанной с профилем. Если пусто, возвращается UID текущей роли. Результат

Возвращает строку — UID профиля, связанного с указанной ролью.

Пример использования


{{ $p := profileuid $.Value.Request $role }}

redirect

redirect - Перенаправление пользователя на указанный URL

Метод

Part: LCML/HTTP

Функция redirect выполняет перенаправление HTTP-запроса на указанный URL с определенным статусным кодом.

Формат:

redirect writer request url statusCode
  • writer ( http.ResponseWriter ) — объект для записи HTTP-ответа.

  • request ( http.Request ) — объект HTTP-запроса, вызывающего перенаправление.

  • url — строка, содержащая URL, на который должно произойти перенаправление.

  • statusCode — целое число, статус кода перенаправления (например, 302 для временного перенаправления). Результат:

Функция не возвращает результатов. Пользователь перенаправляется на указанный URL.

Пример использования:

{{ redirect $.Writer $.Request "/new-page" 302 }}

Пользователь регистрируется на образовательной платформе и после успешного завершения регистрации перенаправляется на страницу курсов:

{{ redirect $.Writer $.Request "/courses" 302 }}

urljoin

urljoin - Функция urljoin собирает URL-строку из словаря.

Метод

Part: LCML/HTTP

Формат

urljoin dict

  • dict: map с ключами, определенными функцией urlParse. Результат

  • Возвращает строку URL, собранную из словаря.

  • Если ключи отсутствуют, используются пустые строки.

  • Если значение userinfo содержит недопустимые данные, возникает паника. Пример использования

{{ $dict := dict “scheme” “https” “host” “host.com:8080” “path” “/path” “query” “query=1” “fragment” “frag” “userinfo” “user:pass” }} {{ $result := urljoin $dict }} {{ $result }} >> https://user:pass@host.com:8080/path?query=1#frag


urlparse

urlparse - Функция urlparse преобразует URL-строку в словарь, содержащий его составляющие.

Метод

Part: LCML/HTTP

Формат

urlparse url

  • url: строка URL. Результат

Возвращает map с ключами:

  • scheme: схема URL.

  • host: полный хост (включая порт).

  • hostname: хост без порта.

  • path: путь URL.

  • query: строка запроса.

  • opaque: непрозрачная часть URL.

  • fragment: фрагмент (якорь).

  • userinfo: информация о пользователе (имя и пароль). Пример использования

{{ $result := urlparse “https://user:pass@host.com:8080/path?query=1” }} {{ $result }} >> map[scheme:https host:host.com:8080 hostname:host.com path:/path query:query=1 userinfo:user:pass]


xrealip

xrealip - Получение IP-адреса из HTTP-запроса

Метод

Part: LCML/HTTP

Функция xrealip извлекает IP-адрес клиента из заголовков HTTP-запроса или, если заголовки отсутствуют, из адреса удаленного подключения.

Формат:

xRealIp r
  • r — объект HTTP-запроса (http.Request). Пример:

Возвращает строку с IP-адресом, полученным из:

  • Заголовка X-Real-Ip.

  • Если X-Real-Ip отсутствует — заголовка X-Forwarded-For.

  • Если оба заголовка отсутствуют — из свойства RemoteAddr объекта HTTP-запроса.